/*            Copyright(c) 2006-2008 Dave Sexton           *
 * http://www.codeplex.com/DocProject                      *
 * http://www.codeplex.com/DocProject/Project/License.aspx *
 ***********************************************************/
using System;
using System.Collections.Generic;
using System.Text;

namespace DaveSexton.DocProject
{
	public interface IAnyProject : IComparableProject
	{
		#region Public Properties
		string Name { get; }

		string UniqueName { get; }

		string Directory { get; }

		string FilePath { get; }

		BufferedSettingsDictionaryBase<string, string> Settings { get; }

		IProjectOutput Output { get; }

		IProjectProperties Properties { get; }

		IProjectProperties ConfigurationProperties { get; }

		object Project { get; }

		bool IsVisualBasic { get; }

		bool IsJSharp { get; }

		bool IsCSharp { get; }

		bool IsSaved { get; set; }
		#endregion
		
		#region Methods
		bool Matches(IAnyProject other);

		void Save();

		void Refresh();

		void AddReference(object projectReference);

		void WriteProperties(string outputFile, bool configuration, bool append);

		/// <param name="path">Absolute or relative path to the file or directory.</param>
		IProjectItem GetItem(string path);

		/// <param name="path">Absolute or relative path to the directory.</param>
		IProjectItem GetFolder(string path);
		#endregion
	}
}
